//package com.plian.system.service.ra.estateregistration;
//
//import com.alibaba.excel.EasyExcel;
//import com.alibaba.excel.read.listener.PageReadListener;
//import com.alibaba.fastjson.JSON;
//import com.fasterxml.jackson.core.type.TypeReference;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.plian.Tools.*;
//import com.plian.Tools.pagedata.PageData;
//import com.plian.system.bean.ra.EstateRegistrationExcelBean;
//import com.plian.system.config.exception.MyRuntimeException;
//import com.plian.system.constant.baseinfo.ValueSetConstant;
//import com.plian.system.constant.sys.FormTypeConstant;
//import com.plian.system.dao.ra.estateregistration.EstateRegistrationDao;
//import com.plian.system.dao.ra.landassets.LandAssetsDao;
//import com.plian.system.dao.sys.orgzation.OrgzationDao;
//import com.plian.system.excel.ImportExcelUtil;
//import com.plian.system.excel.ImportResult;
//import com.plian.system.model.CommonCode;
//import com.plian.system.model.ListResult;
//import com.plian.system.model.ObjResult;
//import com.plian.system.model.page.Page;
//import com.plian.system.service.bt.baseinfo.BaseInfoService;
//import com.plian.system.service.sys.code.IFormCodeService;
//import com.plian.system.service.sys.file.FileService;
//import org.apache.commons.io.IOUtils;
//import org.apache.commons.lang.exception.ExceptionUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Async;
//import org.springframework.scheduling.annotation.AsyncResult;
//import org.springframework.stereotype.Service;
//
//import javax.servlet.http.HttpServletResponse;
//import java.io.ByteArrayInputStream;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.util.*;
//import java.util.concurrent.Future;
//import java.util.stream.Collectors;
//
//import static com.plian.system.constant.sys.FormStatusConstant.*;
//
//@Service
//public class EstateRegistrationService {
//    private static final Logger log = LoggerFactory.getLogger(EstateRegistrationService.class);
//    @Autowired
//    EstateRegistrationDao estateRegistrationDao;
//    @Autowired
//    OrgzationDao orgzationDao;
//    @Autowired
//    FileService fileService;
//    @Autowired
//    IFormCodeService formCodeService;
//
//    @Autowired
//    BaseInfoService baseInfoService;
//
//    @Autowired
//    LandAssetsDao landAssetsDao;
//    /**
//     * 保存
//     *
//     * @param pd
//     * @return
//     */
//    public ObjResult save(PageData pd) {
//        try {
//            String id = UuidUtil.get32UUID();
//            pd.put("id", id);
//            pd.put("orgId", TokenUtil.getTokenOrgId());
//            pd.put("createTime", new Date());
//            pd.put("createUser", TokenUtil.getTokenUserId());
//            pd.put("updateTime", new Date());
//            pd.put("updateUser", TokenUtil.getTokenUserId());
//            pd.put("reportTime", new Date());
//            pd.put("isEntrust", "0");
//            pd.put("formType", FormTypeConstant.RA_ESTATEREGISTRATION );
//            pd.put("code",formCodeService.getCode(FormTypeConstant.RA_ESTATEREGISTRATION));
//            estateRegistrationDao.save(pd);
//            //保存附件
//            fileService.saveAll(id, (List<HashMap>) pd.get("list_doc"));
//            return new ObjResult(CommonCode.SUCCESS);
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException(new ObjResult(CommonCode.ERROR));
//        }
//    }
//
//    /**
//     * 修改
//     *
//     * @param pd
//     * @return
//     */
//    public ObjResult edit(PageData pd) {
//        try {
//            pd.put("updateTime", new Date());
//            pd.put("updateUser", TokenUtil.getTokenUserId());
//            pd.put("reportTime", new Date());
//            estateRegistrationDao.edit(pd);
//            fileService.edit(pd.getString("id"), (List<HashMap>) pd.get("list_doc"));
//            return new ObjResult(CommonCode.SUCCESS);
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException(new ObjResult(CommonCode.ERROR));
//        }
//    }
//
//    /**
//     * 单据详情
//     *
//     * @param pd
//     * @return
//     */
//    public ObjResult findbyid(PageData pd) {
//        String pro_id = pd.getString("id");
//        try {
//            ObjResult objResult;
//            PageData p = estateRegistrationDao.findbyid(pro_id);
//                objResult = new ObjResult(CommonCode.SUCCESS);
//            objResult.setPageData(p);
//            return objResult;
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException(new ObjResult(CommonCode.ERROR));
//        }
//    }
//
//    /**
//     * 根据id删除
//     *
//     * @param ids
//     * @return
//     */
//    public ObjResult del_ids(List<String> ids) {
//        try {
//            estateRegistrationDao.del_ids(ids);
//            return new ObjResult(CommonCode.SUCCESS);
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException(new ObjResult(CommonCode.ERROR));
//        }
//    }
//
//    /**
//     * 查询列表
//     *
//     * @return
//     */
//    public ListResult listA(PageData pd) {
//        ListResult listResult;
//        try {
//            pd.put("orgId", TokenUtil.getTokenOrgId());
//            Page page = new Page(true, pd);
//            List<PageData> list = estateRegistrationDao.list(page);
//            listResult = new ListResult(CommonCode.SUCCESS);
//            listResult.setList(list);
//            listResult.setTotal(page.getTotal());
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            listResult = new ListResult(CommonCode.ERROR);
//        }
//        return listResult;
//    }
//
//    /**
//     * 查询列表
//     *
//     * @return
//     */
//    public ListResult refList(PageData pd) {
//        ListResult listResult;
//        try {
//            pd.put("orgId", TokenUtil.getTokenOrgId());
//            pd.put("divisionFlag", "true");
//            Page page = new Page(true, pd);
//            List<PageData> list = estateRegistrationDao.list(page);
//            listResult = new ListResult(CommonCode.SUCCESS);
//            listResult.setList(list);
//            listResult.setTotal(page.getTotal());
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            listResult = new ListResult(CommonCode.ERROR);
//        }
//        return listResult;
//    }
//
//    /**
//     * 查询列表
//     *
//     * @return
//     */
//    public ListResult variationList(PageData pd) {
//        ListResult listResult;
//        try {
//            pd.put("orgId", TokenUtil.getTokenOrgId());
//            pd.put("variationFlag", "true");
//            Page page = new Page(true, pd);
//            List<PageData> list = estateRegistrationDao.list(page);
//            listResult = new ListResult(CommonCode.SUCCESS);
//            listResult.setList(list);
//            listResult.setTotal(page.getTotal());
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            listResult = new ListResult(CommonCode.ERROR);
//        }
//        return listResult;
//    }
//
//    /**
//     * 查询列表   报表
//     * @param pd
//     * @return
//     */
//    public ListResult listB(PageData pd) {
//        ListResult listResult;
//        try {
//            pd.put("status","3");
//            String sourceOfRealEstate = pd.getString("sourceOfRealEstate");
//            if (sourceOfRealEstate != null && !"".equals(sourceOfRealEstate)) {
//                pd.put("sourceOfRealEstate",sourceOfRealEstate);
//            }
//            String realEstateProperties = pd.getString("realEstateProperties");
//            if (realEstateProperties != null && !"".equals(realEstateProperties)) {
//                pd.put("realEstateProperties",realEstateProperties);
//            }
//            String estateUseSituation = pd.getString("estateUseSituation");
//            if (estateUseSituation != null && !"".equals(estateUseSituation)) {
//                pd.put("estateUseSituation",estateUseSituation);
//            }
////            String applyCompanyIds = pd.getString("applyCompanyIds");
////            if (applyCompanyIds != null && !"".equals(applyCompanyIds)) {
////                pd.put("orgId",applyCompanyIds);
////            }
//            String keywords = pd.getString("keywords");
//            if (keywords != null && !"".equals(keywords)) {
//                pd.put("keywords",keywords.trim());
//            }
//            Page page = new Page(true, pd);
//            List<PageData> list = estateRegistrationDao.list(page);
//            listResult = new ListResult(CommonCode.SUCCESS);
//            listResult.setList(list);
//            listResult.setTotal(page.getTotal());
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            listResult = new ListResult(CommonCode.ERROR);
//        }
//        return listResult;
//    }
//
//
//    /**
//     * 提交单据
//     *
//     * @param ids 单据id
//     */
//    public ObjResult submit(List<String> ids){
//        try{
//            PageData pageData = new PageData();
//            pageData.put("status", String.valueOf(FINISH));
//            pageData.put("id", ids);
//            estateRegistrationDao.refer(pageData);
//            return new ObjResult(CommonCode.SUCCESS);
//        }catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            return new ObjResult(CommonCode.ERROR);
//        }
//    }
//
//    /**
//     * 退回单据
//     *
//     * @param formId 单据id
//     */
//    public void reject(String formId) throws Exception {
//        PageData pageData = new PageData();
//        pageData.put("status", String.valueOf(REJECT));
//        pageData.put("id", Collections.singletonList(formId));
//        estateRegistrationDao.refer(pageData);
//    }
//
//    /**
//     * 审批完成
//     *
//     * @param formId
//     */
//    public void finish(String formId) {
//        try {
//            PageData pageData = new PageData();
//            pageData.put("status", String.valueOf(FINISH));
//            pageData.put("id", Collections.singletonList(formId));
//            estateRegistrationDao.refer(pageData);
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException(new ObjResult("单据流转完成时修改单据状态失败！"));
//        }
//    }
//
//    /**
//     * 委托
//     *
//     * @param pd
//     * @return
//     */
//    public ObjResult entrust(PageData pd) {
//        try {
//            PageData pageData = estateRegistrationDao.findbyid(pd.getString("id"));
//            if (null == pageData.getString("entrustUnit") || "".equals(pageData.getString("entrustUnit"))) {
//                pageData.put("entrustUnit", pd.getString("entrustUnit"));
//                pageData.put("isEntrust", "1");
//                estateRegistrationDao.edit(pageData);
//                return new ObjResult(CommonCode.SUCCESS);
//            } else {
//                throw new MyRuntimeException(new ObjResult("已存在委托单位！"));
//            }
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException(new ObjResult("单据保存委托单位报错！"));
//        }
//    }
//
//    /**
//     * 取消委托
//     *
//     * @param pd
//     * @return
//     */
//    public ObjResult cancelEntrust(PageData pd) {
//        try {
//            PageData pageData = estateRegistrationDao.findbyid(pd.getString("id"));
//            pageData.remove("entrustUnit");
//            pageData.put("isEntrust", "0");
//            estateRegistrationDao.edit(pageData);
//            return new ObjResult(CommonCode.SUCCESS);
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException("单据保存委托单位报错！");
//        }
//    }
//
//    /**
//     * 工作流
//     *
//     * @param formIds 单据ids
//     */
//    public List<PageData> findByIds(List<String> formIds) {
//        try {
//            PageData pageData = new PageData();
//            pageData.put("ids", formIds);
//            return estateRegistrationDao.findByIds(pageData);
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            throw new MyRuntimeException("根据单据id列表查询报表失败！");
//        }
//    }
//
//    public void exportTemplateExcel(HttpServletResponse response, OutputStream os) {
//        try {
//            String fname = "房产登记导入模板";
//            os = response.getOutputStream();//取得输出流
//            response.reset();//清空输出流
//            //下面是对中文文件名的处理
//            response.setCharacterEncoding("UTF-8");//设置相应内容的编码格式
//            InputStream inputStream = this.getClass().getResourceAsStream("/exceldemo/estateRegistrationImport.xlsx");
//            fname = java.net.URLEncoder.encode(fname, "UTF-8");
//            response.setHeader("Content-Disposition", "attachment;filename=" + new String(fname.getBytes("UTF-8"), "UTF-8") + ".xlsx");
//
//            response.setContentType("application/msexcel");//定义输出类型
//            int len;
//            byte[] b = new byte[2048];
//            while ((len = inputStream.read(b)) != -1) {
//                os.write(b, 0, len);
//            }
//            response.setHeader("Content-Length", String.valueOf(inputStream.available()));
//
//            inputStream.close();
//            os.close();
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//        }
//    }
//
//    @Async("ttlExecutor")
//    public Future<ImportResult> importExcel(String progressId, InputStream inputStream) {
//        String progress = "progress";
//        String key = progressId + "#half:hour";
//        try {
//            byte[] bytes = IOUtils.toByteArray(inputStream);
//            inputStream = new ByteArrayInputStream(bytes);
//
//            Map<String, Map<String, String>> mapRef = getRef();
//
//            List<Object> projectList = new ArrayList<>();
//            EasyExcel.read(inputStream).build()
//                    .read(EasyExcel.readSheet(1).headRowNumber(1).head(EstateRegistrationExcelBean.class)
//                            .registerReadListener(new PageReadListener<>(list -> projectList.addAll(list))).build());
//            ImportExcelUtil.filterEmpty(projectList);
//
//
//            PageData landQueryPd = new PageData();
//
//            landQueryPd.put("status", FINISH);
//            landQueryPd.put("orgId", TokenUtil.getTokenOrgId());
//            Page page = new Page(false, landQueryPd);
//            List<PageData> landList = landAssetsDao.list(page);
//            Map<String, PageData> landNameMap = new HashMap<>();
//            if (CollectionUtil.isNotEmpty(landList)){
//                for (PageData landPd : landList) {
//                    landNameMap.put(landPd.getString("landName"), landPd);
//                }
//            }
//
//            List<PageData> erList = estateRegistrationDao.allList();
//            List<String> existERNames = new ArrayList<>();
//            if (CollectionUtil.isNotEmpty(landList)){
//                existERNames = erList.stream().filter(p -> !(!p.getString("status").equals("3")
//                        && p.getString("orgId").equals(TokenUtil.getTokenOrgId())))
//                        .map(p -> p.getString("estateName")).collect(Collectors.toList());
//            }
//
//            ImportResult result = checkData(mapRef, projectList, progressId, landNameMap, existERNames);
//            if (!result.isSuccess()) {
//                CacheUtil.put(progress, progress, key, result.getMsg());
//                return new AsyncResult<>(result);
//            }
//
//            int count = 0;
//            int size = projectList.size();
//            // 项目信息
//            ObjectMapper mapper = new ObjectMapper();
//            for (Object readExcel : projectList) {
//                EstateRegistrationExcelBean excelBean = (EstateRegistrationExcelBean) readExcel;
//
//                PageData newData = new PageData();
//                String json = JSON.toJSONStringWithDateFormat(excelBean, DateUtil.PATTERN_DATETIME);
//                newData.putAll(mapper.readValue(json, new TypeReference<HashMap<String, Object>>() {}));
//                PageData old = estateRegistrationDao.findByName(excelBean.getEstateName());
//
//                newData.put("formType", FormTypeConstant.RA_ESTATEREGISTRATION);
//                newData.put("status", UNREVIEWED);
//                newData.put("updateTime", new Date());
//                newData.put("updateUser", TokenUtil.getTokenUserId());
//                newData.put("code", formCodeService.getCode(FormTypeConstant.RA_ESTATEREGISTRATION));
//                boolean addFlag = true;
//
//                if (Optional.ofNullable(old).isPresent()) {
//                    newData.put("id", old.getString("id"));
//                    newData.put("reportTime", old.getString("reportTime"));
//                    addFlag = false;
//                } else {
//                    newData.put("id", UuidUtil.get32UUID());
//                    newData.put("isEntrust", "0");
//                    newData.put("reportTime", new Date());
//                    newData.put("createTime", new Date());
//                    newData.put("createUser", TokenUtil.getTokenUserId());
//                }
//
//
//                //入库
//                try {
//                    if (addFlag) {
//                        estateRegistrationDao.save(newData);
//                    } else {
//                        estateRegistrationDao.edit(newData);
//                    }
//                    count++;
//                    int value = count * 100 / size;
//                    CacheUtil.put(progress, progress, key, value + 100);
//                } catch (Exception e) {
//                    log.error(ExceptionUtils.getFullStackTrace(e));
//                    log.error(newData + "导入失败");
//                    CacheUtil.put(progress, progress, key, newData + "导入失败");
//                    return new AsyncResult<>(new ImportResult(false, newData + "导入失败"));
//                }
//            }
//
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            log.error(ExceptionUtils.getFullStackTrace(e));
//            log.error("解析失败");
//            CacheUtil.put(progress, progress, key, "解析失败");
//            return new AsyncResult<>(new ImportResult(false, "解析失败"));
//        }
//
//        CacheUtil.put(progress, progress, key, "导入成功");
//        return new AsyncResult<>(new ImportResult(true, "导入成功"));
//    }
//
//    private Map<String, Map<String, String>> getRef() {
//        Map<String, Map<String, String>> mapRefs = new HashMap<>(16);
//        mapRefs.put("estatePlanningRef", baseInfoService.getChildMap(ValueSetConstant.ESTATE_PLANNING));
//        mapRefs.put("estateSourceRef", baseInfoService.getChildMap(ValueSetConstant.ESTATE_SOURCE));
//        mapRefs.put("estateRealRef", baseInfoService.getChildMap(ValueSetConstant.ESTATE_REAL));
//        mapRefs.put("buildingStructureRef", baseInfoService.getChildMap(ValueSetConstant.BUILDING_STRUCTURE));
//        mapRefs.put("landTypeRef", baseInfoService.getChildMap(ValueSetConstant.LAND_TYPE));
//        mapRefs.put("landUseRef", baseInfoService.getChildMap(ValueSetConstant.LAND_USE));
//        mapRefs.put("landUsedRef", baseInfoService.getChildMap(ValueSetConstant.LAND_USED));
//        mapRefs.put("landValueTypeRef", baseInfoService.getChildMap(ValueSetConstant.LAND_VALUE_TYPE));
//
//        Map<String, String> unitRef = new HashMap<>(512);
//        try {
//            List<PageData> allOrgs = orgzationDao.list(null);
//            if (CollectionUtil.isNotEmpty(allOrgs)) {
//                for (PageData pageData : allOrgs) {
//                    unitRef.put((String) pageData.get("name"), (String) pageData.get("id"));
//                }
//            }
//        } catch (Exception e) {
//            log.error(ExceptionUtils.getFullStackTrace(e));
//        }
//        mapRefs.put("unitRef", unitRef);
//
//
//        return mapRefs;
//    }
//
//
//    private ImportResult checkData(Map<String, Map<String, String>> mapRef, List<Object> readExcels,
//                                   String progressId,
//                                   Map<String, PageData> landNameMap, List<String> existERNames) {
//        ImportResult importResult = new ImportResult(true, "");
//
//        StringBuilder msg = new StringBuilder();
//
//        if (CollectionUtil.isNotEmpty(readExcels)) {
//            for (Object readExcel : readExcels) {
//                EstateRegistrationExcelBean excelBean = (EstateRegistrationExcelBean) readExcel;
//                int index = readExcels.indexOf(readExcel);
//
//                //判空
//                msg.append(ImportExcelUtil.checkEmpty("2", "所属单位",
//                        excelBean.getOrgId(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "登记时间",
//                        excelBean.getRegistrationTime(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "房产名称",
//                        excelBean.getEstateName(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "是否关联土地",
//                        excelBean.getIsAssociatedLand(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "房产地址",
//                        excelBean.getAddress(), index).getMsg());
//
//                msg.append(ImportExcelUtil.checkEmpty("2", "房产来源",
//                        excelBean.getSourceOfRealEstate(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "房产性质",
//                        excelBean.getRealEstateProperties(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "资产使用现状",
//                        excelBean.getStatusOfAssetUse(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "资产入账情况",
//                        excelBean.getAccountingOfAssets(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "价值类型",
//                        excelBean.getValueTypes(), index).getMsg());
//
//
//                msg.append(ImportExcelUtil.checkEmpty("2", "金额（元）",
//                        excelBean.getAmountOf(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "总层数(层)",
//                        excelBean.getTotalNumberOfLayer(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "房产总面积(m²)",
//                        excelBean.getTotalPropertyArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "公开出租总面积(m²)",
//                        excelBean.getOpenLeasedArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "协议出租总面积(m²)",
//                        excelBean.getTotalLeasedArea(), index).getMsg());
//
//                msg.append(ImportExcelUtil.checkEmpty("2", "出借总面积(m²)",
//                        excelBean.getLendingArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "闲置总面积(m²)",
//                        excelBean.getIdleArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "自用总面积(m²)",
//                        excelBean.getGrossSelfUseArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "对外投资总面积(m²)",
//                        excelBean.getTotalInvestmentArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "分摊总面积(m²)",
//                        excelBean.getSharedTotalArea(), index).getMsg());
//
//                msg.append(ImportExcelUtil.checkEmpty("2", "确权情况",
//                        excelBean.getAuthenticRight(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "权利类型",
//                        excelBean.getRightType(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "是否危房",
//                        excelBean.getDangerousHouse(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "经办人",
//                        excelBean.getAgent(), index).getMsg());
//                msg.append(ImportExcelUtil.checkEmpty("2", "联系电话",
//                        excelBean.getPhone(), index).getMsg());
//
//
//                //类型判断
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_DATE, "2", "登记时间",
//                        excelBean.getRegistrationTime(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_DATE, "2", "竣工或投入使用日期",
//                        excelBean.getDateOfService(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_DATE, "2", "房产证发证日期",
//                        excelBean.getDateOfHouseProperty(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_DATE, "2", "土地发证日期",
//                        excelBean.getDateOfLandTitle(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_DATE, "2", "不动产发证日期",
//                        excelBean.getDateOfRealEstate(), index).getMsg());
//
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "金额（元）",
//                        excelBean.getAmountOf(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_INTEGER, "2", " 总层数(层)",
//                        excelBean.getTotalNumberOfLayer(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "房产总面积(m²)",
//                        excelBean.getTotalPropertyArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "原地块总面积(m²)",
//                        excelBean.getFloorSpace(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "公开出租总面积(m²)",
//                        excelBean.getOpenLeasedArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "协议出租总面积(m²)",
//                        excelBean.getTotalLeasedArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "出借总面积(m²)",
//                        excelBean.getLendingArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "闲置总面积(m²)",
//                        excelBean.getIdleArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "自用总面积(m²)",
//                        excelBean.getGrossSelfUseArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "对外投资总面积(m²)",
//                        excelBean.getTotalInvestmentArea(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "分摊总面积(m²)",
//                        excelBean.getSharedTotalArea(), index).getMsg());
//
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "房屋已确权面积(m²)",
//                        excelBean.getRightAreaOfHouse(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "土地已确权面积(m²)",
//                        excelBean.getRightAreaOfLand(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "房屋未确权面积(m²)",
//                        excelBean.getNoRightAreaOfHouse(), index).getMsg());
//                msg.append(ImportExcelUtil.checkType(ImportExcelUtil.TYPE_BIGDECIMAL, "2", "土地未确权面积(m²)",
//                        excelBean.getNoRightAreaOfLand(), index).getMsg());
//
//
//            }
//            //判断完类型若有错直接返回
//            if (msg.toString().length() > 0) {
//                return new ImportResult(false, msg.toString());
//            }
//            //判断完类型若有错直接返回
//            if (msg.toString().length() > 0) {
//                return new ImportResult(false, msg.toString());
//            }
//
//            //对象和字典是否存在校验
//            int size = readExcels.size();
//            int count = 0;
//            for (Object readExcel : readExcels) {
//                EstateRegistrationExcelBean excelBean = (EstateRegistrationExcelBean) readExcel;
//                int index = readExcels.indexOf(readExcel);
//                //对象和字典是否存在校验
//                //单位名称
//                excelBean.setOrgId(StringUtil.cleanChars(excelBean.getOrgId()));
//                if (mapRef.get("unitRef").containsKey(excelBean.getOrgId())) {
//                    if (!mapRef.get("unitRef").get(excelBean.getOrgId()).equals(TokenUtil.getTokenOrgId())) {
//                        msg.append("sheet2第" + index + "行(企业名称=" + excelBean.getOrgId() + ")并不是当前登录单位\n");
//                    } else {
//                        excelBean.setOrgId(mapRef.get("unitRef").get(excelBean.getOrgId()));
//                    }
//                }else if (!StringUtil.isEmpty(excelBean.getOrgId())) {
//                    msg.append("sheet2第" + index + "行(企业名称=" + excelBean.getOrgId() + ")在系统中不存在\n");
//                }
//
//                if (StringUtil.isNotBlank(excelBean.getEstateName())){
//                    if (existERNames.contains(excelBean.getEstateName())){
//                        msg.append("sheet2第" + index + "行(房产名称=" + excelBean.getEstateName() + ") 在系统中已存在\n");
//                    }
//                }
//
//                if (StringUtil.isNotBlank(excelBean.getIsAssociatedLand())) {
//                    if (!"是".equals(excelBean.getIsAssociatedLand()) && !"否".equals(excelBean.getIsAssociatedLand())) {
//                        msg.append("sheet2第" + index + "行(是否关联土地=" + excelBean.getIsAssociatedLand() + ") 不是是或者否\n");
//                    }
//
//                    if ("是".equals(excelBean.getIsAssociatedLand())){
//                        //关联土地时 对地产名称进行处理
//                        if (StringUtil.isNotBlank(excelBean.getLandName())){
//                            if (landNameMap.containsKey(excelBean.getLandName())){
//                                PageData landPd = landNameMap.get(excelBean.getLandName());
//                                excelBean.setTheLandUsed(landPd.getString("landUsed"));
//                                excelBean.setLandStatus(landPd.getString("landType"));
//                            }else {
//                                msg.append("sheet2第" + index + "行(土地名称=" + excelBean.getLandName() + ") 在系统中不可用或不存在\n");
//                            }
//                        }
//                    }
//                }
//
//                if (StringUtil.isNotBlank(excelBean.getSettlementBuilding())) {
//                    if (!"是".equals(excelBean.getSettlementBuilding()) && !"否".equals(excelBean.getSettlementBuilding())) {
//                        msg.append("sheet2第" + index + "行(是否安置房=" + excelBean.getSettlementBuilding() + ") 不是是或者否\n");
//                    }
//                }
//
//                if (StringUtil.isNotBlank(excelBean.getStraightPublicHouse())) {
//                    if (!"是".equals(excelBean.getStraightPublicHouse()) && !"否".equals(excelBean.getStraightPublicHouse())) {
//                        msg.append("sheet2第" + index + "行(是否直管公房=" + excelBean.getStraightPublicHouse() + ") 不是是或者否\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getAffordableHousing())) {
//                    if (!"是".equals(excelBean.getAffordableHousing()) && !"否".equals(excelBean.getAffordableHousing())) {
//                        msg.append("sheet2第" + index + "行(是否经济适用房=" + excelBean.getAffordableHousing() + ") 不是是或者否\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getTalentRoom())) {
//                    if (!"是".equals(excelBean.getTalentRoom()) && !"否".equals(excelBean.getTalentRoom())) {
//                        msg.append("sheet2第" + index + "行(是否人才房=" + excelBean.getTalentRoom() + ") 不是是或者否\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getIsThereABasement())) {
//                    if (!"是".equals(excelBean.getIsThereABasement()) && !"否".equals(excelBean.getIsThereABasement())) {
//                        msg.append("sheet2第" + index + "行(是否有地下室=" + excelBean.getIsThereABasement() + ") 不是是或者否\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getDangerousHouse())) {
//                    if (!"是".equals(excelBean.getDangerousHouse()) && !"否".equals(excelBean.getDangerousHouse())) {
//                        msg.append("sheet2第" + index + "行(是否危房=" + excelBean.getDangerousHouse() + ") 不是是或者否\n");
//                    }
//                }
//
//                if (StringUtil.isNotBlank(excelBean.getAccountingOfAssets())) {
//                    if (!"已入账".equals(excelBean.getAccountingOfAssets()) && !"未入账".equals(excelBean.getAccountingOfAssets())
//                            && !"部分入账".equals(excelBean.getAccountingOfAssets())) {
//                        msg.append("sheet2第" + index + "行(资产入账情况=" + excelBean.getAccountingOfAssets() + ") 不是已入账、未入账、部分入账\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getAuthenticRight())) {
//                    if (!"已确权".equals(excelBean.getAuthenticRight()) && !"未确权".equals(excelBean.getAuthenticRight())
//                            && !"部分确权".equals(excelBean.getAuthenticRight())) {
//                        msg.append("sheet2第" + index + "行(确权情况=" + excelBean.getAuthenticRight() + ") 不是已确权、未确权、部分确权\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getRightType())) {
//                    if (!"有抵押".equals(excelBean.getRightType()) && !"无抵押".equals(excelBean.getRightType())) {
//                        msg.append("sheet2第" + index + "行(权利类型=" + excelBean.getRightType() + ") 不是有抵押、无抵押\n");
//                    }
//                }
//                if (StringUtil.isNotBlank(excelBean.getLevelOfDangerousHouse())) {
//                    if (!"A级（正常使用）".equals(excelBean.getLevelOfDangerousHouse())
//                            && !"B级（基本满足）".equals(excelBean.getLevelOfDangerousHouse())
//                            && !"C级（局部危险）".equals(excelBean.getLevelOfDangerousHouse())
//                            && !"D级（危房）".equals(excelBean.getLevelOfDangerousHouse())) {
//                        msg.append("sheet2第" + index + "行(危房等级=" + excelBean.getLevelOfDangerousHouse() + ") 不是A级（正常使用）、B级（基本满足）、C级（局部危险）、D级（危房）\n");
//                    }
//                }
//
//
//
//
//                //房产规划用途
//                if (StringUtil.isNotBlank(excelBean.getPropertyPlanningUse())) {
//                    if (!mapRef.get("estatePlanningRef").containsKey(excelBean.getPropertyPlanningUse())) {
//                        msg.append("sheet2第" + index + "行(房产规划用途=" + excelBean.getPropertyPlanningUse() + ")在系统中不存在\n");
//                    }
//                }
//
//                //土地用途
//                if (StringUtil.isNotBlank(excelBean.getTheLandUsed())) {
//                    if (!mapRef.get("landUsedRef").containsKey(excelBean.getTheLandUsed())) {
//                        msg.append("sheet2第" + index + "行(土地用途=" + excelBean.getTheLandUsed() + ")在系统中不存在\n");
//                    }
//                }
//
//                //土地性质
//                if (StringUtil.isNotBlank(excelBean.getLandStatus())) {
//                    if (!mapRef.get("landTypeRef").containsKey(excelBean.getLandStatus())) {
//                        msg.append("sheet2第" + index + "行(土地性质=" + excelBean.getLandStatus() + ")在系统中不存在\n");
//                    }
//                }
//
//                //房产来源
//                if (StringUtil.isNotBlank(excelBean.getSourceOfRealEstate())) {
//                    if (!mapRef.get("estateSourceRef").containsKey(excelBean.getSourceOfRealEstate())) {
//                        msg.append("sheet2第" + index + "行(房产来源=" + excelBean.getSourceOfRealEstate() + ")在系统中不存在\n");
//                    }
//                }
//
//                //房产性质
//                if (StringUtil.isNotBlank(excelBean.getRealEstateProperties())) {
//                    if (!mapRef.get("estateRealRef").containsKey(excelBean.getRealEstateProperties())) {
//                        msg.append("sheet2第" + index + "行(房产性质=" + excelBean.getRealEstateProperties() + ")在系统中不存在\n");
//                    }
//                }
//
//                //资产使用现状
//                if (StringUtil.isNotBlank(excelBean.getStatusOfAssetUse())) {
//                    if (!mapRef.get("landUseRef").containsKey(excelBean.getStatusOfAssetUse())) {
//                        msg.append("sheet2第" + index + "行(土地价值类型=" + excelBean.getStatusOfAssetUse() + ")在系统中不存在\n");
//                    }
//                }
//
//                //房屋结构
//                if (StringUtil.isNotBlank(excelBean.getBuildingStructure())) {
//                    if (!mapRef.get("buildingStructureRef").containsKey(excelBean.getBuildingStructure())) {
//                        msg.append("sheet2第" + index + "行(房屋结构=" + excelBean.getBuildingStructure() + ")在系统中不存在\n");
//                    }
//                }
//
//                //价值类型
//                if (StringUtil.isNotBlank(excelBean.getValueTypes())) {
//                    if (!mapRef.get("landValueTypeRef").containsKey(excelBean.getValueTypes())) {
//                        msg.append("sheet2第" + index + "行(价值类型=" + excelBean.getValueTypes() + ")在系统中不存在\n");
//                    }
//                }
//
//                count++;
//                int value = count * 100 / size;
//                CacheUtil.put("progress", "progress", progressId, value);
//            }
//        }
//
//        //统一放置报错
//        if (msg.toString().length() > 0) {
//            importResult = new ImportResult(false, msg.toString());
//        }
//
//        return importResult;
//
//    }
//
//}
